#pragma once

#include <Ogre.h>

#include "Particle.h"
#include "RigidBody.h"
#include "StaticPlane.h"

namespace PHYOgre
{

class EntityFactory
{
public:
	EntityFactory();
	EntityFactory(Ogre::SceneManager *iSceneManager);
	~EntityFactory(void);

	void SetSceneManager(Ogre::SceneManager *iSceneManager);
	Particle* CreateParticle(const Ogre::String& iName, const Ogre::String& iModel, const ParticleDescriptor& iDesc, ShapeType iShape)const;
	RigidBody* CreateRigidBody(const Ogre::String& iName, const Ogre::String& iModel, const RigidBodyDescriptor& iDesc,ShapeType iShape)const;
	StaticPlane* CreateStaticPlane(const Ogre::String& iName,const Ogre::String& iTexture, const Vector3& iNormal, const Real& iOffset,
									const Vector2& iDim, const RigidBodyDescriptor& iDesc) const;
private:
	Ogre::SceneManager *mSceneManager;
};

}